草庐IT

C++:替代 STL 和 Boost?

全部标签

c++ - 将一个 STL vector 高效地分配给另一个 STL vector (WSL 问题)

我对完成STLvector分配的时间有疑问。上下文是:我正在将二进制文件读入std::vector像这样:std::vectorread_file(conststd::string&file_path){std::ifstreamstream(file_path);if(!stream.good()){std::cout();}stream.seekg(0,std::ios_base::end);autosize=stream.tellg();stream.seekg(0,std::ios_base::beg);std::vectorvalues(size/sizeof(float))

c++ - Boost::Beast:带有 websocket 流水线的服务器

我正在编写一个带有boostbeast1.70和mysql8C连接器的c++websocket服务器。服务器将同时连接多个客户端。特殊之处在于每个客户端将向服务器连续执行100个websocket请求。我的服务器的每个请求都是“CPU轻型”,但服务器对每个请求执行“时间繁重”的SQL请求。我已经使用websocket_server_coro.cpp示例启动了我的服务器。服务器步骤是:1)websocket读取2)一个sql请求3)websocket写入问题是对于给定的用户,服务器在第2步被“锁定”,并且在这一步和第3步完成之前无法读取。因此,这100个请求是按顺序解决的。这对我的用例来

c++ - 转换宽字符串以 boost 日期

我需要将数百万个存储为宽字符串的日期转换为boost日期以下代码有效。但是,它会生成一个可怕的编译器警告并且看起来效率不高。有没有更好的办法?#include"boost/date_time/gregorian/gregorian.hpp"usingnamespaceboost::gregorian;#includeusingnamespacestd;wstringws(L"2008/01/01");stringtemp(ws.length(),'\0');copy(ws.begin(),ws.end(),temp.begin());dated1(from_simple_string(

c++ - 如何在 C++ 中更改 Latin1-UTF8 编码(可能使用 Boost)?

我的源库主要使用UTF8,但一些较旧的库在其中硬编码了WindowsLatin1编码字符串。我希望Boost有一个明确的转换功能,但我没有找到。我真的需要手动编写这样一个普通的解决方案吗?寻找在Linux上运行的可移植解决方案。(ThisQ类似,但不完全相同)编辑:ICU似乎是正确的答案,但对我的需求来说有点矫枉过正。我最终对已知的几个使用过的扩展字符进行了字符串替换。 最佳答案 InternationalComponentsforUnicode(ICU)确实有您正在寻找的解决方案。Boost可以在支持ICU的情况下编译,例如用于B

c++ - Themida 的软件保护替代品

我们目前使用Themida来保护我们的C/C++软件,但防病毒软件的大量误报困扰着我们的客户群。有没有人知道任何其他软件保护器和Themida,但没有“让反病毒疯狂”的旗帜? 最佳答案 有很多,但都看起来很可疑:UPX、NSPACK、eXpressor、FSG、telock、ReCrypt、Orien、Aspack、ReCrypt、AcProtect、MEW、Molebox、mpress、EXESTEALTH、yoda的密码器、一旦出现nerw版本,就会有人创建反工具。也许解决方案是某种DRM保护

c++ - 使用 Boost 在共享内存中创建循环缓冲区时出现问题

我正在尝试使用Boostcircular_buffer和进程间库在共享内存中创建一个循环缓冲区。我编译并运行了Interprocessdocumentation中给出的示例用于在共享内存中毫无问题地创建vector。但是,当我修改它以将Boostcircular_buffer用作:intmain(intargc,char*argv[]){managed_shared_memorysegment(create_only,"MySharedMemory",65536);constShmemAllocatoralloc_inst(segment.get_segment_manager());

c++ - 在 Sunos 上编译 boost

我刚刚开始使用boost库。对于我们的一个项目,我想使用sun编译器在SunOS上编译Boost1.39.0。但是,如果我使用http://www.boost.org/doc/libs/1_39_0/more/getting_started/unix-variants.html中提到的步骤编译它,并非所有目标都已编译。有人可以提供有助于在Sun操作系统上编译它的资源吗?是否有任何单独的指令集用于在SunOS上进行编译 最佳答案 SunOS编译器因没有一致的库和编译而臭名昭著。但我们确实有至少一名使用该平台的测试人员(参见Sandia

c++ - 我怎么知道boost线程是否完成?

我正在使用boost::thread来处理队列中的消息。当第一条消息到来时,我启动一个消息处理线程。当第二条消息到来时,我检查消息处理线程是否完成。如果完成了我会开始一个新的如果没有完成,我什么都不做。我怎么知道线程是否完成了?我尝试使用joinable()但它不起作用,因为当线程完成后,它仍然可以连接。我也试过一次性打断进程,在我的线程末尾添加一个中断点,但是没有用。谢谢编辑:我想让我的线程休眠一段不确定的时间,并在触发信号时唤醒。这样做的意思是boost::condition_variable 最佳答案 据我所知,您应该使用jo

c++ - 使用 boost::random 从要删除元素的 std::list 中进行选择

查看此relatedquestion更通用地使用BoostRandom库。我的问题涉及从std::list中选择一个随机元素,执行一些操作,这可能包括从列表中删除元素,然后选择另一个随机元素,直到满足某些条件满意。boost代码和for循环大致如下所示://createandinsertelementsintoliststd::listmyList;//[...]//selectuniformlyfromlistindicesboost::uniform_intindices(0,myList.size()-1);boost::variate_generator>selectIndex

c++ - gluLookAt 替代方案不起作用

我尝试自己计算观察矩阵,而不是使用gluLookAt()。我的问题是我的矩阵不起作用。然而,在gluLookAt上使用相同的参数确实有效。我创建观察矩阵的方法:Vector3Eye,At,Up;//theseshouldbeparameters=)Vector3zaxis=At-Eye;zaxis.Normalize();Vector3xaxis=Vector3::Cross(Up,zaxis);xaxis.Normalize();Vector3yaxis=Vector3::Cross(zaxis,xaxis);yaxis.Normalize();floatr[16]={xaxis.x